package com.browsesoft.user;

import java.util.LinkedList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.browsesoft.ExtendElement;
import com.browsesoft.htmlcomponent.HTMLBasicComponent;
import com.browsesoft.htmlcomponent.HTMLTableModel;

/**
 * 角色表格（table）
 */
public class RoleTableModel implements HTMLTableModel {
	/**
	 * 所有角色列表
	 */
	private LinkedList roles = null;

	/**
	 * 初始化model
	 * 
	 * @throws Exception
	 */
	public void init(HttpServletRequest request) throws Exception {
	}

	/**
	 * 得到列数
	 * 
	 * @return 列数
	 */
	public int getColumnCount() {
		return 5;
	}

	/**
	 * 得到列的名称
	 * 
	 * @param index
	 *            列号
	 * @return 列的名称
	 */
	public String getColumnName(int index) {
		if (index == 0) {
			return "角色名称";
		} else {
			return "";
		}
	}

	/**
	 * 得到列的英文名
	 * 
	 * @param index
	 *            列号
	 * @return 列的英文名
	 */
	public String getColumnEname(int index) {
		return "";
	}

	public Object getDatas() {
		return null;
	}

	/**
	 * 得到行数
	 * 
	 * @return 行数
	 */
	public int getRowCount() {
		return roles.size();
	}

	/**
	 * 设置传递的参数
	 * 
	 * @param request
	 */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		/*
		 * RoleManager manager = (RoleManager) ManagerGroup.getManagerGroup().
		 * getManager("role"); roles = manager.getRoles();
		 */
	}

	/**
	 * 得到某列的操作类型
	 * 
	 * @return 类型
	 */
	public String getType(int col) {
		String[] types = { "td", "modify", "delete", "assignuser",
				"assignfunction" };
		return types[col];
	}

	/**
	 * 修改单元值
	 */
	public void modifyCellValue(Element td, Document doc, int row, int col) {
		Role role = (Role) roles.get(row);
		if (col == 0) {
			ExtendElement.replaceElementContext(td, doc
					.createTextNode((String) role.getAttributes().get("name")));
		} else if (col >= 1) {
			Element e = (Element) ExtendElement
					.findElements(td, "type", "link").get(0);
			String str = e.getAttribute("onclick");
			str = str.replaceAll("id=", "id=" + role.getID());
			e.setAttribute("onclick", str);
		}
	}

	/**
	 * 设置模型所对应的组件
	 * 
	 * @param component
	 *            对应的组件
	 */
	public void setComponent(HTMLBasicComponent component) {
	}

	/**
	 * 模型更新页面元素
	 * 
	 * @throws Exception
	 */
	public void updatePageElement(HTMLBasicComponent c) throws Exception {
	}

	/**
	 * 设置条件
	 */
	public void setCondition(String condition) {
	}
}